#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @FileName  :ship.py
# @Time      :2021/4/11 9:37
# @Author    :Letquit
"""
文件说明：
        创建Ship类管理飞船的大部分行为

"""
import pygame
from pygame.sprite import Sprite


class Ship(Sprite):
    """管理飞船的大部分行为"""

    def __init__(self, ai_settings, screen):    # 引用self和screen
        """初始化飞船并设置其初始位置"""
        super(Ship, self).__init__()
        self.screen = screen
        self.ai_settings = ai_settings  # 添加ai_settings获取速度

        # 加载飞船图像并获取其外接矩形
        self.image = pygame.image.load('images/ship.bmp')   # 加载图像 -> 返回surface
        self.rect = self.image.get_rect()   # 获取飞船surface的属性rect
        self.screen_rect = screen.get_rect()    # 获取屏幕surface的属性rect

        # 将每艘飞船放在屏幕底部中央
        self.rect.centerx = self.screen_rect.centerx    # 飞船中心的x坐标
        self.rect.bottom = self.screen_rect.bottom      # 飞船下边缘的y坐标

        # 在飞船的属性center中存储小数值
        self.center = float(self.rect.centerx)  # rect只存储整数部分

        # 移动标志
        self.moving_right = False   # 为True向右
        self.moving_left = False

    def update(self):
        """根据移动标志调整飞船的位置"""
        # 如果同时按下左右键先右后左位置不变
        # 更新飞船的center值，而不是rect
        if self.moving_right and self.rect.right < self.screen_rect.right:  # 飞船外接矩形的右边缘x坐标小于右边缘的x坐标
            self.center += self.ai_settings.ship_speed_factor   # 原值-右移值
        if self.moving_left and self.rect.left > 0:  # 飞船外接矩形的左边缘x坐标大于左边缘的x坐标(0)
            self.center -= self.ai_settings.ship_speed_factor   # 原值-左移值
        # 触及边缘则停止移动

        # 根据self.center更新rect对象
        self.rect.centerx = self.center

    def blitme(self):
        """在指定位置绘制飞船"""
        self.screen.blit(self.image, self.rect)  # 根据self.rect指定的位置将图像绘制到屏幕上

    def center_ship(self):
        """让飞船在屏幕上居中"""
        self.center = self.screen_rect.centerx

if __name__ == "__main__":
    run_code = 0
